某日突然心血來潮,把之前買的線上 Docker 課程看完一遍,看完後覺得內容很有趣。自己以前是前端工程師,在工作上對於容器、微服務和雲端等之前從未接觸,在學完 Docker 後心中仍覺得少了什麼,為了填滿這塊空缺,於是計畫決定將 Kubernetes 這塊拼圖拼上。
因為自己是第一次接觸 Kubernetes,故在撰寫內容時不會寫的太艱深,太難的就不會寫出來。如有寫不清楚或不正確的地方歡迎指正!
是一項開源的 Container Orchestration Engine(容器編排工具),用於容器的自動化部署、擴充和調度及管理,提供功能強大的容器管理、調度和監控功能,由 Google 於 2014 年首次對外公開,之後抖內給 Cloud Native Computing Foundation 基金會(英文縮寫為 CNCF) 維護與管理。
Kubernetes 在希臘語中為舵手或船長的意思,在海上負責航行並維護船上人員的安全。在網路上可能聽過有人稱 Kubernetes 為 k8s(簡稱),原因是 k 到 s 之間有 8 個字母。
若今天在工作上你需要管理大量的應用程式(容器),並確保程式在運行時,不會因程式、版更或資源更新等其他問題致使服務掛掉或停止(要讓服務保持高可用性),Kubernetes 就是很好的一項解決方案。
Kubernete 想要達成的目的是:
若是今天在小公司,其業務上僅需維護一兩個網站、App 或應用服務時,並沒有需要部署、管理大量容器,或沒有需要擴充應用服務來應付大量併發的請求,也許程式掛掉也不需要急著處理,像這種情況可能就不太需要使用 Kubernetes。
除了 Kubernetes 以外,還有其他選擇?
有的,除了 Kubernetes 以外網路上還有其他的容器編排工具。像是 Docker Swarm 和 Apache Mesos 等工具,但使用 Kubernetes 的使用者仍佔多數。
[圖片來源]: https://hub.docker.com//swarm/
為何 Kubernetes 受到大家喜愛?其特色與優勢有...
網路上已整理許多使用 kubernetes 的益處。
種種跡象都顯示大推(坑)
這時回過頭來看一下 Docker 與 Kubernetes 到底有什麼關係!?
事實上在 Kubernetes v1.24 版本前,Kubernetes 使用 Docker Engine 中的 dockershim 作為其預設 container runtime engine。但在 v1.24 與之後的版本,修改成讓使用者去選擇符合 Container Runtime Interface (CRI) 的 container runtime。
2023-11-28 更新
Kubernetes 將不依賴於 dockershim,將其從原始碼移除。並建立一個 Container Runtime Interface (CRI) 的標準,讓其他不同的 container runtime 可以按照這個標準與 Kubernetes 協作。
此舉除了擴展可以使用的 container runtime 工具外,也減少 k8s 的 source code 與工具間的依賴。
以下是 Kubernetes CRI 支援的 container runtime:
Container runtime
是賦予系統能夠運行容器的一套程式,負責管理 Kubernetes 中容器的執行與生命週期。可以將應用程式打包成容器,並在叢集中執行容器的一個重要元件。
因此使用 Kubernetes 時 Docker 並不是必備的工具。但就學習的角度來看,事先學習 Docker 將有助於理解容器的概念,讓學習過程更加順暢。